// 实现⼀个算法，输⼊是⼈数(>=2)，计算任意⼀天同时存在两个及以上的⼈过⽣⽇的概率，保留四位⼩数。(20)
// 输⼊：50
// 输出：0.9704
// 输⼊：61
// 输出：0.9951
pub fn new_birthday_probability(n: u32) -> f64 {
    if n < 2 {
        return 0.0;
    }

    let probability = (0..n)
        .scan(1.0, |state, i| {
            *state *= (365 - i) as f64 / 365.0;
            if *state < 0.0001 {
                None
            } else {
                Some(*state)
            }
        })
        .last()
        .unwrap_or(1.0);

    let result = 1.0 - probability;
    (result * 10000.0).round() / 10000.0
}
